package org.g4studio.core.orm.xibatis.common.xml;

import org.w3c.dom.Node;

/**
 * A nodelet is a sort of callback or event handler that can be registered to
 * handle an XPath event registered with the NodeParser.
 */
public interface Nodelet {

	/**
	 * For a registered XPath, the NodeletParser will call the Nodelet's process
	 * method for processing.
	 * 
	 * @param node
	 *            The node represents any XML node that can be registered under
	 *            an XPath supported by the NodeletParser. Possible nodes are:
	 *            <ul>
	 *            <li>Text - Use node.getNodeValue() for the text value.
	 *            <li>Attribute - Use node.getNodeValue() for the attribute
	 *            value.
	 *            <li>Element - This is the most flexible type. You can get the
	 *            node content and iterate over the node's child nodes if
	 *            neccessary. This is useful where a single XPath registration
	 *            cannot describe the complex structure for a given XML stanza.
	 *            </ul>
	 * 
	 */
	void process(Node node) throws Exception;

}
